package bancosys.tec.persist.validator;

import java.util.List;

import bancosys.tec.persist.Persistable;
import bancosys.tec.persist.PersistenceController;
import bancosys.tec.persist.hibernate.impl.HibernateDependencyMetaData;

/**
 * Fábrica de validação que devolve validadores que não validam nada.
 * 
 * @created Feb 16, 2007
 * @author Gustavo Almeida
 */
@SuppressWarnings("deprecation")
public class NullValidatorFactory implements ValidatorFactory {
    private BeanValidator validator;

    /**
     * Construtor.
     */
    public NullValidatorFactory() {
        this.validator = new BeanValidator() {

            public void setPersistenceController(PersistenceController persistenceController) {
                // vazio
            }

            public void setHibernateDependencyMetaData(HibernateDependencyMetaData hibernateDependencyMetaData) {
                // vazio
            }

            public List<ValidationError> validateInsert(Persistable bean) {
                return null;
            }

            public List<ValidationError> validateRemove(Persistable bean) {
                return null;
            }

            public List<ValidationError> validateUpdate(Persistable bean) {
                return null;
            }

            public List validateInsertAuthorization(Persistable bean) {
                return null;
            }

            public List validateUpdateAuthorization(Persistable bean) {
                return null;
            }

            public List validateRemoveAuthorization(Persistable bean) {
                return null;
            }

            public Class getTargetClass() {
                return Persistable.class;
            }
        };
    }

    /**
     * Devolve um validador que nunca retorna erro, não valida nada.
     * 
     * @param <T> tipo do bean
     * @param bean bean.
     * @return um validador que nunca retorna erro, não valida nada.
     */
    @SuppressWarnings("unchecked")
    public <T extends Persistable> Validator<T> getValidator(T bean) {
        return this.validator;
    }
}
